package com.tencent.wxcloudrun.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.tencent.wxcloudrun.domain.TActi;
import com.tencent.wxcloudrun.vo.request.acti.ActiAddReqVo;
import com.tencent.wxcloudrun.vo.request.acti.ActiUpdateReqVo;

/**
 * @author ziyin.zhao
 * @description 针对表【t_acti(活动表)】的数据库操作Service
 * @createDate 2025-04-22 16:43:56
 */
public interface TActiService extends IService<TActi> {

    /**
     * 新增活动
     *
     * @param reqVo 请求入参
     * @return 活动ID
     */
    Long add(ActiAddReqVo reqVo);

    /**
     * 更新活动
     *
     * @param reqVo 请求入参
     */
    void update(ActiUpdateReqVo reqVo);

    /**
     * 删除活动
     *
     * @param userId 用户序号
     * @param actiId 活动ID
     */
    void delete(Long userId, Long actiId);

    /**
     * 发布活动
     *
     * @param userId 用户序号
     * @param actiId 活动ID
     */
    void release(Long userId, Long actiId);

    /**
     * 活动开始
     *
     * @param actiId 活动ID
     */
    void actiBegin(Long actiId);

    /**
     * 活动结束
     *
     * @param actiId 活动ID
     */
    void actiEnd(Long actiId);

    /**
     * 活动入围开始
     *
     * @param actiId 活动ID
     */
    void actiSelectedBegin(Long actiId);

    /**
     * 活动入围结束
     *
     * @param actiId 活动ID
     */
    void actiSelectedEnd(Long actiId);

    /**
     * 活动黑箱开始
     *
     * @param actiId 活动ID
     */
    void actiBlackBegin(Long actiId);

    /**
     * 活动黑箱结束
     *
     * @param actiId 活动ID
     */
    void actiBlackEnd(Long actiId);

    /**
     * 活动参选校验
     *
     * @param actiId 活动ID
     */
    void joinCheck(Long actiId);

    /**
     * 入围活动参选校验
     *
     * @param actiId 活动ID
     */
    void joinSelectedCheck(Long actiId);

    /**
     * 黑箱卡活动参选校验
     *
     * @param actiId 活动ID
     */
    void joinBlackCheck(Long actiId);

    /**
     * 查询活动列表
     *
     * @param actiStatus 活动状态
     * @param actiTitle 活动标题
     * @return 活动列表
     */
    List<TActi> listActi(Integer actiStatus, String actiTitle);

}
